#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void actionByPerson(int row, int col); // 人执行下棋
    void actionByAI(int &clickRow, int &clickCol); // 机器执行下棋
    void updateGameMap(int row, int col); // 每次落子后更新游戏棋盘
    void calculateScore(); // 计算评分
    std::vector<std::vector<int> > scoreMapVec; // 存储各个点位的评分情况，作为AI下棋依据
    bool isWin(int row, int col); // 判断游戏是否胜利
    bool isDeadGame(); // 判断是否和棋
protected:
    // 绘制
    void paintEvent(QPaintEvent *event);
    // 监听鼠标移动情况，方便落子
    void mouseMoveEvent(QMouseEvent *event);
    // 实际落子
    void mouseReleaseEvent(QMouseEvent *event);
private:
    bool playerFlag=0; // 标示下棋方 0/,1/ai
    std::vector<std::vector<int> > gameMapVec; // 存储当前游戏棋盘和棋子的情况,空白为0，白子1，黑子-1
    int clickPosRow, clickPosCol; // 存储将点击的位置
    Ui::MainWindow *ui;
private slots:
    void chessOneByPerson(); // 人执行
    void chessOneByAI(); // AI下棋
};


#endif // MAINWINDOW_H
